package cn.tedu.rabbitmqboot.m2;


import org.springframework.amqp.core.Queue;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

import javax.annotation.PostConstruct;

@SpringBootApplication
public class Main {
    public static void main(String[] args) {
        SpringApplication.run(Main.class, args);
    }

    @Bean
    public Queue taskQueue() {
        // true : 持久队列
        return new Queue("task_queue", true);
    }

    @Autowired
    private Producer producer;

    /**
     * 在spring执行完扫描,创建完所有对象,完成所有的注入后
     * 会自动执行 @PostConstruct方法
     */
    @PostConstruct
    public void test() {
        /**
         * p.send()中执行一个死循环,会阻塞spring主线程的执行
         * 要启动一个新的线程执行 send()
         * */

       /* new Thread(new Runnable(){
            @Override
            public void run() {
                producer.send();
            }
        }).start();*/    // 上下两段代码一样

        new Thread(() -> producer.send()).start();  //lambda 表达式
    }
}
